package com.chenju.invokechainservice.test;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;

public class ClassFileFilterExample {

    public static void main(String[] args) {
        File directory = new File("D:\\Project\\springboot-easytest\\invokechain-service\\target\\classes"); // 替换为实际目录路径

        // 创建一个 FileFilter 实现来筛选 .class 文件
        FileFilter classFileFilter = new FileFilter() {
            @Override
            public boolean accept(File file) {
                return file.isFile() && file.getName().endsWith(".class");
            }
        };

        // 调用递归方法来获取目录及子目录中的 .class 文件列表
        List<File> classFiles = listFiles(directory, classFileFilter);

        // 打印获取到的 .class 文件列表
//        for (File classFile : classFiles) {
//            System.out.println(classFile.getAbsolutePath());
//        }
    }

    private static List<File> listFiles(File directory, FileFilter filter) {
        List<File> fileList = new ArrayList<>();

        if (directory.isDirectory()) {
            File[] files = directory.listFiles();
            if (files != null) {
                for (File file : files) {
                    if (file.isFile()){
                        fileList.add(file);
                    } else if (file.isDirectory()){
                        fileList.addAll(listFiles(file, filter));
                    }
                }
            }
        }
        return fileList;
    }
}
